import 'dart:convert';

import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:love_app/common/su.dart';
import 'package:love_app/common/su_dialog.dart';
import 'package:love_app/enum/login_status.dart';
import 'package:love_app/routes/route.dart';

class BaseApi {
  BuildContext context;

  // 判断code是否为200
  bool isSuccess(Map data) {
    try {
      if (data['code'] != 200) {
        return false;
      }
      return true;
    } catch (Exception) {
      return false;
    }
  }

  // 单独获取请求头的token
  Map headerToken(String token){
    Map header = {
      'X-Auth-Token': token,
    };
    return header;
  }

  // 结果转json
  Map jsonToMap(value) {
    return json.decode(value.toString());
  }

  // 获取message
  String getMessage(data) {
    return data['message'];
  }

  // 轻量级提示
  void showMessage(String msg) {
    SuDialog.showToast(msg);
  }

  /// 关闭=》 异步网络请求等待圆圈
  void closeLoading(BuildContext context) {
    // Navigator.pop(context);
    // Su.suPrints('关闭圈圈');
    // Navigator.of(context).pop();
    Navigator.of(context, rootNavigator: true).pop();
  }

  /// 发生异常调用
  void dioError(DioError error) {
    // 错误信息
    Map errorMap = {
      'statusCode': error.response.statusCode ?? '',
      'param': error.request.data ?? '',
      'method': error.request.method ?? '',
      'message': error.message ?? '',
      'errorData': error.response.data ?? '',
      'path': error.request.path ?? '',
    };

    Su().suPrint(errorMap, msg: '网络请求错误');
    // 弹出错误信息对话框
    SuDialog().errorDialog(context, errorMap.toString());
  }

  // 判断登录状态是否失效
  LoginStatus loginStatus(data) {
    if (data['code'] == 200001) {
      String message = data['message'].toString();
      SuDialog.showToast(message);
      MyRouter.navigatorKey.currentState.pushNamed("login");
    }
    return LoginStatus.login;
  }
}
